package com.codebattery.service;

/**
 * 服务基类,常用的CRUD方法：T为实体类型，I为主键类型
 *
 * @Author cay91
 * @Date 2020-08-15 5:37 PM
 * @Version 1.0
 */
import java.io.Serializable;
import java.util.List;
public interface MyBatisBaseService<T, I extends Serializable> {
    /**
     * 根据主键删除记录
     *
     * @param id
     * @return
     * @date at 2016年1月15日上午11:08:29
     */
    int deleteByPrimaryKey(I id);

    /**
     * 插入
     *
     * @param record
     * @return
     * @date at 2016年1月15日上午11:08:46
     */
    int insert(T record);

    /**
     * 依据主键查找
     *
     * @param id
     * @return
     * @date at 2016年1月15日上午11:08:53
     */
    T selectByPrimaryKey(I id);

//    /**
//     * 查找全部记录
//     *
//     * @return
//     * @date at 2016年1月15日上午11:09:06
//     */
//    List<T> selectAll();

    /**
     * 根据主键更新
     *
     * @param record
     * @return
     * @date at 2016年1月15日上午11:09:19
     */
    int updateByPrimaryKey(T record);

    int insertOrUpdate(T record);

//    /**
//     * 按列与列值删除
//     *
//     * @param columnName  列名称
//     * @param columnValue 值
//     * @return
//     */
//    int deleteByColumn(String columnName, Object columnValue);

//    /**
//     * 按列查询
//     *
//     * @param columnName
//     * @param columnValue
//     * @return
//     */
//    T selectByColumn(String columnName, Object columnValue);

//    /**
//     * 批量插入
//     *
//     * @param records record list
//     * @returnr
//     */
//    int insertBatch(List<T> records);

//    /**
//     * 批量删除
//     *
//     * @param keys id list
//     * @return
//     */
//    int deleteBatch(List<I> keys);

//    List<T> selectByPrimaryKeys(List<I> keys);
}
